package com.company.project.common.redismq;

import com.alibaba.fastjson.JSONObject;
import com.company.project.entity.TCallbakTaskEntity;
import com.company.project.service.TCallbakTaskService;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;

public class ConcurrentSquareCalculator {
    @Resource
    public TCallbakTaskService tCallbakTaskService;

    class SquareCallable implements Callable<JSONObject> {

        private  List<TCallbakTaskEntity> list;

        public SquareCallable(List<TCallbakTaskEntity> list) {
            this.list = list;
        }

        @Override
        public JSONObject call() throws Exception {
            tCallbakTaskService.runCallBack(list);
            return null;
        }
    }
    JSONObject runCallBackDscy(List<TCallbakTaskEntity> list) {
        System.out.println("list 总数量：{ "+ list.size()+" } ms");

        //入库
        tCallbakTaskService.runCallBack(list);
        return null;
    }

//    // 定义一个Callable任务来计算平方
//    static class SquareCallable implements Callable<Integer> {
//        private final int number;
//
//        public SquareCallable(int number) {
//            this.number = number;
//        }
//
//        @Override
//        public Integer call() throws Exception {
//            return number * number;
//        }
//    }

//    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        // 创建一个整数列表
//        List<Integer> numbers = new ArrayList<>();
//        for (int i = 1; i <= 10; i++) {
//            numbers.add(i);
//        }
//
//        // 创建一个固定大小的线程池
//        ExecutorService executorService = Executors.newFixedThreadPool(5);
//
//        // 提交任务并收集Future对象
//        List<Future<Integer>> futures = new ArrayList<>();
//        for (int number : numbers) {
//            Future<Integer> future = executorService.submit(new SquareCallable(number));
//            futures.add(future);
//        }
//
//        // 等待所有任务完成并收集结果
//        List<Integer> squares = new ArrayList<>();
//        for (Future<Integer> future : futures) {
//            // 注意：get()方法会阻塞，直到任务完成
//            Integer square = future.get();
//            squares.add(square);
//        }
//
//        // 打印结果
//        for (int i = 0; i < numbers.size(); i++) {
//            System.out.println("The square of " + numbers.get(i) + " is " + squares.get(i));
//        }
//
//        // 关闭线程池
//        executorService.shutdown();
//
//        // 等待线程池中的任务都执行完毕
//        try {
//            if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
//                // 线程池没有在给定的时间内终止，可以选择取消它
//                executorService.shutdownNow();
//            }
//        } catch (InterruptedException ie) {
//            // 当前线程在等待过程中被中断
//            executorService.shutdownNow();
//            Thread.currentThread().interrupt();
//        }
//
//        // 所有线程都已完成，继续主线程的其他操作（如果有的话）
//        System.out.println("All threads have finished.");
//    }
}